GO
1. 使用Putty连接远程Linux主机
Putty免费开源,小巧玲珑,在WIndows和Linux上都支持。所以我选择使用这个工具来管理远程Linux主机。使用它的好处是:可以随意的复制粘贴,可以通过鼠标滚轮查看之前显示的历史信息。
Putty套件的工具有很多,它们的功能如下所示:
- PuTTY(SSH和telnet客户端软件)
- PSCP(SCP客户端,用来远程复制文件)
- PSFTP(SFTP客户端,使用SSH协议传输文件)
- PuTTYtel(一个只有telnet功能的客户端软件)
- Plink(Windows下的命令行接口,使用它可以在cmd下使用PuTTY)
- Pageant(SS和的密钥守护进程,开启后,密钥保存到内存中,连接时不再输入密钥的密码,PuTTY、PSCP、PSFTP和Plink都可以使用)
- PuTTYgen(生成密钥对的工具)
在本文中,只用到PuTTY和PuTTYgen两个软件。
1.1. 使用密码登陆
- 填写远程Linux基本信息
- Host Name(or IP address)这一栏填 服务器的IP。
- Port 这一栏保持22不变。
- Connection type 也保持ssh不变。
- Save Sessions 这里自定义一个名字,主要用来区分主机。
- 定义字符集
- 为了防止乱码,对于管理安装了中文支持的远程Linux系统来说,要在Putty这里也设置支持中文。
- 点一下左侧的 Window –> Translation,看右侧的 Character set translation on received data,选择 UTF-8。
- 然后再点一下左侧的 Session,最后点右侧的 save。
- 远程连接Linux
- 点Open,初次连接是会有一个提示(第一次连接的时候),它的意思是要打开的Linux还未在本机登记,是否要信任它。点击“是”即可连接。
- 然后连接成功后即可登陆管理远程的Linux了。
1.2. 使用密钥登陆
SSH服务支持以一种安全认证机制,即密钥认证。所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(publickey), 任何人都可以看到其内容,用于加密;另一个称为私钥(privatekey),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用私钥可以轻松解密,但根据公钥来猜测私钥却十分困难。SSH 的密钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和私钥。PuTTY 是可以使用这种机制登录 Linux 的。
- 生成密钥对
- Putty生成密钥对的工具是Puttygen,打开它。右下角的 1024 改成 2048,这表示密钥长度为 2048 位,这样更安全,然后点一下 ―Generate‖按钮, 这样就开始生成密钥了,请来回动一下鼠标,这样才可以快速生成密钥对,大约几秒后就完了。
- “Key comment”这里可以保持不变也可以自定义,它是对该密钥的简单介绍。“Kye passphrase”这里用来给你的密钥设置密码,这样安全一些,当然也可以留空,建议你设置一个密码。“Confirm passphrase”这里再输入一遍刚刚你设置的密码。
- 保存私钥
- 单击“Save private key”,选择一个存放路径,并定义名字,点“保存”。这个就是所谓的私钥(一个*.ppk文件),请把它保存到一个比较安全的地方,谨防丢掉或被别人看到。
- 复制公钥到Linux
- 回到刚才生成密钥的窗口,在 “Key”的下方有一段长长的字符串,这串字符串就是公钥的内容,把整个公钥字符串复制下来。然后粘贴到 Linux 的这个文件中: /root/.ssh/authorized_keys。注意这个文件的名字是固定的。下面请做如下操作:
- 创建/root/.ssh 目录,因为这个目录默认是不存在的。# mkdir /root/.ssh
- 更改这个目录的权限。# chmod 700 /root/.ssh
- 把公钥内容粘贴进/root/.ssh/authorized_keys 文件中。
- vi /root/.ssh/authorized_keys
- 回车后,按一下“i”进入编辑模式,然后直接点击鼠标右键就粘贴了,粘贴后,按一下“Esc”键,然后输入“:wq”回车保存退出该文件。
- 回到刚才生成密钥的窗口,在 “Key”的下方有一段长长的字符串,这串字符串就是公钥的内容,把整个公钥字符串复制下来。然后粘贴到 Linux 的这个文件中: /root/.ssh/authorized_keys。注意这个文件的名字是固定的。下面请做如下操作:
- 关闭SeLinux
- SeLinux 是 CentOS 的一种安全机制,它的存在的确让 Linux 系统安全了很多,但也产生了不少的麻烦。在这,如果不关闭 seLinux,使用密钥登录会提示 “Server refused our key”, 关闭方法如下:
- 临时关闭:setenforce 0
- 永久关闭:vi /etc/selinux/config ,把该配置文件中的SELINUX=enforcing修改为“SELINUX=disabled”,保存退出后然后重启系统。
- 说明: /etc/selinux/config配置文件中有三种模式:enforcing(默认开启)、permissive(提醒)和disabled(关闭)。
- SeLinux 是 CentOS 的一种安全机制,它的存在的确让 Linux 系统安全了很多,但也产生了不少的麻烦。在这,如果不关闭 seLinux,使用密钥登录会提示 “Server refused our key”, 关闭方法如下:
- 关闭防火墙
- 关闭netfilter (即iptables)
- iptables -F 临时将iptables的规则清空(防火墙清空)
- /etc/init.d/iptables save (或service iptables save) 将清楚后的防火墙规则保存到 /etc/sysconfig/iptables
- 设置putty通过密钥登陆
- 打开 PuTTY 软件,点一下我们保存好的 session,然后点右侧的“Load”,在左侧靠下面点一下“SSH”前面的+然后选择“Auth”看右侧“Private key file for authentication:”下面的长条框里目前为空,点一下“Browse”, 找到我们刚刚保存好的私钥,点“打开”。此时这个长条框里就有了私钥的地址,当然你也可以自行编辑这个路径。然后再回到左侧,点一下最上面的“Session”,在右侧再点一下“Save”。
- 保存好 session 后,点一下右下方的“Open”。出现登录界面,你会发现和原来的登录提示内容有所不同。
- 现在不再输入 root 密码,而是需要输入密钥的密码,如果先前在生产密钥的时候你没有设置密码,输入 root 后会直接登录系统。
- 需要注意几点:
- /root/.ssh目录的权限为700
- SELinux要关闭
- /root/.ssh/authorized_keys文件名要写对
- 公钥的文件内容要粘贴对
2. 两台Linux互相登陆
有时候需要在Linux系统上登陆到另一台Linux主机,这就需要用到以下的技能。用以实现这个目的,CentOS自带的客户端软件是 openssh-clients。
2.1. 检查openssh-clients是否安装
检查是否安装,运行下面的命令:ssh -V
若没有安装,则运行下面的命令安装:yum install -y openssh-clients
2.2. 使用密码登陆
- 登陆命令格式如下:
ssh Username@IPaddress
一个例子:ssh root@192.168.0.105
- 查看当前登陆的用户身份:
whoami
仅显示用户名who am i
显示用户名、登陆终端、登陆时间、登陆来源IP
2.3. 使用密钥登陆
- 客户端生成密钥对
执行如下命令来生成密钥对:ssh-keygen
- “Enter file in which to save the key (/root/.ssh/id_rsa): “ 首先,可以自定义私钥的存放位置,默认路径为/root/.ssh/id_rsa。可以采用默认值,回车即可。
- “Enter passphrase (empty for no passphrase): “ 然后,定义私钥的密码,可以留空,直接回车即可。也可以设置一个密码。
- “Enter same passphrase again: “ 接下来,会让我们再一次输入密码,然后回车,变生成了密钥对了。
- 可以在相关的目录里面找到私钥(id_rsa)和公钥(id_rsa.pub)
- 把把公钥复制到目标Linux上面
- 查看公钥内容并复制
- 把复制的内容粘贴到 /root/.ssh/suthorized_keys(该文件的创建过程参考Putty的密钥登陆)
- 确认该文件的权限,chmod 600 /root/.ssh/authorized_keys
- 登录Linux
- ssh 目标Linux的IP地址
补充:非root用户的密钥登陆与root用户的配置过程类似。
3. 补充内容
3.1. SSH限制来源IP
即SSH的黑名单和白名单,是以下这两个文件:
- /etc/hosts.allow
- /etc/hosts.deny
3.2. 禁止普通用户登陆系统
当服务器进行高负荷的管理操作时,禁止普通用户登陆系统的方法如下:12touch /etc/nologin //禁止rm -f /etc/nologin //取消禁止
OK